package uncertainty;

import java.util.Iterator;

import tools.Matrix;
import tools.Vector;
import util.Memorier;

public abstract class UncertaintySet {

	protected Memorier mem;
	protected int dim;
	
	public UncertaintySet(int dim) {
		mem = new Memorier();
		this.dim = dim;
	}
	
	public abstract Iterator<Vector<Double>> extremePoints();
	
	public abstract Matrix constrains();
	
	public abstract Matrix dualConstrains();
	
	public abstract Vector<Double> max(Vector<Double> obj, double objv);
	
	public abstract Vector<Double> min(Vector<Double> obj, double objv);

	public abstract int sizeEqClasses(int i);

	public abstract Iterator<Vector<Double>> eqClassOf(Vector<Double> xi, int i);
	
	public abstract Iterator<Vector<Double>>[] eqClasses(int i);
	
	public double memoryUsedB(){
		return mem.getUsedMemB();
	}

	public double memoryUsedKB(){
		return mem.getUsedMemKB();
	}
	
	public double memoryUsedMB(){
		return mem.getUsedMemMB();
	}
	
}
